import BaseAudioManager from "./BaseAudioManager";
import ResLoader from "../res/ResLoader";
/**
 * AudioSource 和 cc.audioEngine 最大的区别是，AudioSource 不可以用来播放背景音乐。
 *AudioSource 是作为组件挂载在场景的各种节点上的，所以它可能同时会有多个。而背景音乐的底层播放接口不支持多音轨，
 *同一时刻只能播放一个。所以背景音乐需要用 cc.audioEngine.playMusic 来切换，而 AudioSource 应该用来播放短音效
 *所以 我们只使用AudioEngine 就好了。
 */
export default class SoundManager extends BaseAudioManager {

    constructor(loader:ResLoader){
        super(loader);
    }


    play(name:string,isLoop:boolean = false){
        if(this.audioManager.getSoundVolume() == 0){
            return ;
        }
        super.play(name,isLoop);
    }
    add(name,res,isLoop){
        let audioId = cc.audioEngine.playEffect(res, isLoop);
        BaseAudioManager.sourcePool.set(name,audioId);   
    }

    pause(name:string){
        let audioId = BaseAudioManager.sourcePool.get(name);
        if(audioId){
            cc.audioEngine.pauseEffect(audioId);
        }        
    }

    resume(name:string){
        let audioId = BaseAudioManager.sourcePool.get(name);
        if(audioId){
            cc.audioEngine.resumeEffect(audioId);
        }  
    }

    stop(name:string){
        let audioId = BaseAudioManager.sourcePool.get(name);
        if(audioId){
            cc.audioEngine.stopEffect(audioId);
            BaseAudioManager.sourcePool.delete(name);
        }
    }

    setVolume(count:number){
        cc.audioEngine.setEffectsVolume(count);
        this.audioManager.setSoundVolume(count);
    }

    isPlaying(){
        return false;
    }
}